package appVeterinaria.negocio;

import java.util.Collection;
import appVeterinaria.dao.PacienteDAO;
import appVeterinaria.excepcion.DAOExcepcion;
import appVeterinaria.modelo.Cliente;
import appVeterinaria.modelo.Historia;
import appVeterinaria.modelo.Paciente;

public class GestionPaciente {

	public Collection<Paciente> buscarPorNombre(String nombre)
			throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();
		return dao.buscarPorNombre(nombre);
	}

	public Paciente insertar(int idCliente, String nombre, String especie,
			String raza, String genero, String tipo_sangre,
			String esterilizado, String tamano, String actividad, Double peso,
			String fecha_nacimiento) throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();

		Cliente c = new Cliente();
		c.setIdPersona(idCliente);

		Paciente vo = new Paciente();
		vo.setObjCliente(c);
		vo.setNombre(nombre);
		vo.setEspecie(especie);
		vo.setRaza(raza);
		vo.setGenero(genero);
		vo.setTipoSangre(tipo_sangre);
		vo.setEsterilizado(esterilizado);
		vo.setTamano(tamano);
		vo.setActividad(actividad);
		vo.setPeso(peso);
		vo.setFecNac(fecha_nacimiento);

		int total = dao.contar(nombre, c.getIdPersona());
		if (total == 0) {
			return dao.insertar(vo);
		} else
			throw new DAOExcepcion("Nombre de paciente ya existe");

	}

	public Paciente obtener(int idPaciente) throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();
		return dao.obtener(idPaciente);
	}

	public void eliminar(int idPaciente) throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();
		dao.eliminar(idPaciente);
	}

	public Paciente actualizar(Integer idPaciente, Integer idCliente,
			String nombre, String especie, String raza, String genero,
			String tipo_sangre, String esterilizado, String tamano,
			String actividad, Double peso, String fecha_nacimiento)
			throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();

		Cliente c = new Cliente();
		c.setIdPersona(idCliente);

		Paciente vo = new Paciente();

		vo.setIdPaciente(idPaciente);
		vo.setObjCliente(c);
		vo.setNombre(nombre);
		vo.setEspecie(especie);
		vo.setRaza(raza);
		vo.setGenero(genero);
		vo.setTipoSangre(tipo_sangre);
		vo.setEsterilizado(esterilizado);
		vo.setTamano(tamano);
		vo.setActividad(actividad);
		vo.setPeso(peso);
		vo.setFecNac(fecha_nacimiento);

		int total = dao.contar(nombre, idCliente);
		if (total == 0) {
			return dao.actualizar(vo);
		} else {
			if (vo.getNombre() == nombre) {
				return dao.actualizar(vo);
			} else {
				throw new DAOExcepcion("Nombre del paciente ya existe");
			}
		}
	}

	public Collection<Paciente> listar() throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();
		return dao.listar();
	}
	
	public Collection<Historia> listarHistoria(int idPaciente) throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();
		return dao.listarHistoria(idPaciente);
	}
	
}
